﻿using System;
using System.Collections.Generic;

namespace FlitBit.Cache.CacheNet
{
	/// <summary>
	///   Interface for communicating cache expirations to the eviction manager.
	/// </summary>
	public interface IExpirationByIdMessage : ICacheNetMessage
	{
		/// <summary>
		///   Gets the expired identities (corresponding to CacheNetIdentityKind.Guid)
		/// </summary>
		IEnumerable<Guid> GuidIdentities { get; }

		/// <summary>
		///   Gets the expiration's identity kind.
		/// </summary>
		CacheNetIdentityKind IdentityKind { get; }

		/// <summary>
		///   Gets the expired identities (corresponding to CacheNetIdentityKind.Int32)
		/// </summary>
		IEnumerable<int> Int32Identities { get; }

		/// <summary>
		///   Gets the expired identities (corresponding to CacheNetIdentityKind.Int64)
		/// </summary>
		IEnumerable<long> Int64Identities { get; }

		/// <summary>
		///   Gets the expired identities (corresponding to CacheNetIdentityKind.String)
		/// </summary>
		IEnumerable<string> StringIdentities { get; }
	}
}